package com.zy.test.controller;


import com.zy.test.utils.Result;
import com.zy.test.entity.User;
import com.zy.test.service.impl.UserServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author jhr
 * @since 2022-02-20
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    UserServiceImpl userService;

    @ApiOperation("登录")
    @GetMapping("/login")
    public Result Login(@RequestBody  User user) {
        Result<Object> result = new Result<>();
        if (!"".equals(user.getUserName())){
            QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
            userQueryWrapper.eq("user_name",user.getUserName());
            List<User> list = userService.list(userQueryWrapper);
            if (list.size()==1){
                if (list.get(0).getUserPwd().equals(user.getUserPwd())){
                    return result.success(list);
                }else {
                    return result.fail("账户密码错误");
                }
            }else {
                return result.fail("用户信息查询失败");
            }
        }
        return result.fail("登录失败");
    }

//    @ApiOperation("查询所有数据")
    @GetMapping("/all")
    public List<User> selectAll() {
        return userService.getUsers();
    }
//
//    @ApiOperation("获取总数")
//    @GetMapping("/count")
//    public int countUser(){
//        return userService.count();
//    }
//    @ApiOperation("添加与修改")
//    @PostMapping("/save")
//    public List<String> save(@RequestBody @Valid User user, BindingResult result) {
//        HashMap<Boolean, String> map = new HashMap<>();
//        System.out.println(user);
//        if (result.hasErrors()){
//            result.getFieldErrors().forEach((fieldError -> {
//                String message = fieldError.getDefaultMessage();
//                String field = fieldError.getField();
//                System.out.println(field+": "+message);
//                map.put(false,field+message);
//            }));
//        }else {
//            map.put(userService.saveOrUpdate(user),"成功");
//        }
//        //转为list给前端
//        return map.values().stream().collect(Collectors.toList());
//    }
//
//    @ApiOperation("id查询")
//    @GetMapping("/queryId")
//    public User QueryById(@RequestParam int id){
//        return userService.getById(id);
//    }
//
//    @ApiOperation("删除，id删除")
//    @PostMapping("/delete/{id}")
//    public boolean deleteUser(@ApiParam(value = "id删除", readOnly = true) @PathVariable int id) {
//        return userService.removeById(id);
//    }
//
//    @ApiOperation(value = "分页查询")
//    @PostMapping("/queryPage")
//    public IPage<User> queryPage(
//            @RequestParam("pageNum") int pageNum,
//            @RequestParam("pageSize") int pageSize,
//            @RequestParam(defaultValue = "") String username,
//            @RequestParam(defaultValue = "") String email,
//            @RequestParam(defaultValue = "") String address
//    ) {
////        分页插件使用
//        Page<User> page = new Page<User>(pageNum, pageSize);
//        QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
//
////        like，模糊匹配查询
//        if (!"".equals(username)){
//            userQueryWrapper.like("username", username);
//        }
//        if (!"".equals(email)){
//            userQueryWrapper.like("email", email);
//        }
//        if (!"".equals(address)){
//            userQueryWrapper.like("address", address);
//        }
//
////        倒序输出
//        userQueryWrapper.orderByDesc("id");
//        return userService.page(page, userQueryWrapper);
//
//    }


}

